#include <stdio.h>
#include <stdlib.h>

#define F_PRINT_ERR(e)\
do\
{\
    if(e == NULL)\
    {\
        printf("open error\n");\
        exit(-1);\
    }\
}\
while (0)

int main()
{
    FILE *pf=fopen("a.txt","w+");
    F_PRINT_ERR(pf);

    for(char ch = 'a';ch <= 'z';ch++)
    {
        putchar(fputc(ch,pf));
    }
    printf("\n--------------\n");
    rewind(pf);

    // feof  检测文件结束标志，或为 1 表示结束， 为 0 表示没有结束。
    // feof 会导致多读一次字符。原因是标志位检测滞后导致
    int ch;
//    while (!feof(pf)) {
//        ch = fgetc(pf);
////        putchar(ch);
//        printf("%x -> %c\n",ch,ch);
//    }

//    while((ch = fgetc(pf)) != EOF){
//        printf("%x -> %c\n",ch,ch);
//    }

    while ((ch = fgetc(pf)) && !feof(pf)) {
        printf("%x -> %c\n",ch,ch);
    }

    fclose(pf);

    return 0;
}
